Software applications commonly request memory to be allocated for various uses such as storing variables, code and data. A memory allocation request may be a request for as little as zero bytes of memory. In response to the allocation request, the program receives a valid pointer to the memory location when memory is available that meets the request. This is true even when the request is for a zero byte allocation. If a program reads a value from one of these zero byte locations and attempts to use it, however, unintended results may occur. These unintended results may occur because the program changes program execution based on an unknown value that is contained within that location of memory. Additionally, if a program writes to one of these memory locations, the heap may become corrupted. This in turn can cause difficult stability problems which are difficult to diagnose, and can potentially lead to exploitable conditions.